#include "Reactor.hpp"
#include <memory>

#include <iostream>
#include <cerrno>
#include <functional>
#include <unordered_map>
#include <string>
#include "Socket.hpp"
#include "Epoll.hpp"
#include "Log.hpp"

// int a = 0;
void TaskSolve(Connection* con,std::string& str)
{
    request_t rq;
    if(!rq.Deserialized(str))
    {
        logMessage(ERROR,"taskSolve error fd[%d]\n",con->_fd);
    }
    response_t rp;
    rp.run(rq._x,rq._y,rq._op);
    std::string out = rp.Serialize();
    con->_outBuffer += out;
    Encode(con->_outBuffer);
    //要交给ReactorServer不能直接发
    // con->_send_cb(con);
    con->_server->SetReadWrite(con->_fd,true,true);

}
int main()
{
    // int a = 1;
    // {
    //     int a = 2;
    //     {
    //         int a = 3;
    //         {
    //             int a = 4;
    //             std::cout << a;
    //         }
    //         std::cout << a;
    //     }
    //     std::cout << a;
    // }
    // std::cout << a;
    // std::cout << ::a << std::endl;

    std::unique_ptr<ReactorServer> ptr(new ReactorServer());
    ptr->Dispatcher(&TaskSolve);
    return 0;
}